package net.cyue.easyconfiguration.node.annotation;

import net.cyue.easyconfiguration.node.NodeType;
import net.cyue.easyconfiguration.node.api.INodeTypeConverter;
import net.cyue.easyconfiguration.node.converter.DefaultConverter;

import java.lang.annotation.*;

@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface FieldNode {
    boolean ignore() default false;
    boolean multiNode() default false;
    String name() default "";
    String[] paths() default {};
    NodeType type() default NodeType.ANY;
    NodeType elementType() default NodeType.ANY;
    Class<?> elementJavaType() default Object.class;
    boolean forceConvert() default true;
    boolean elementForceConvert() default true;
    Class<? extends INodeTypeConverter> typeConverter() default DefaultConverter.class;
    Class<? extends INodeTypeConverter> elementTypeConverter() default DefaultConverter.class;
}
